Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

482
Visualizações
¿Por qué la función split ("") de Kotlin da como resultado una cadena vacía inicial y final?

Soy un desarrollador de Java que probó Kotlin y encontró un caso contrario a la intuición entre estos dos lenguajes.

Considere el código dado en Kotlin:

 "???".split("") # gives ["", "?", "?", "?", ""]

y lo mismo en Java:

 "???".split("") # gives ["?", "?", "?"]

¿Por qué Kotlin produce una cadena de espacios vacíos al principio y al final en la matriz resultante? ¿O Java siempre elimina estas cadenas vacías, y simplemente no estaba al tanto de eso?

Sé que existe el método toCharArray() en cada Kotlin String , pero aún así, no es muy intuitivo (¿tal vez los desarrolladores de Java deberían abandonar los viejos hábitos de Java que esperaban reutilizar en un nuevo idioma?).

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Debe filtrar el primer y el último elemento:

 "???".split("").drop(1).dropLast(1)

Mira este ejemplo:

 "".split("") // [, ]

Divide esta secuencia de caracteres en una lista de cadenas alrededor de las apariciones de los delimitadores especificados.

Consulte https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/split.html

over 4 years ago · Santiago Trujillo Relatório

0

Esto se debe a que el método Java split(String regex) los elimina explícitamente:

Este método funciona como si invocara el método de división de dos argumentos con la expresión dada y un argumento límite de cero. Por lo tanto, las cadenas vacías finales no se incluyen en la matriz resultante.

split(String regex, int limit) menciona:

Cuando hay una coincidencia de ancho positivo al comienzo de esta cadena, se incluye una subcadena inicial vacía al comienzo de la matriz resultante. Sin embargo, una coincidencia de ancho cero al principio nunca produce una subcadena inicial tan vacía.

"" es una coincidencia de ancho cero. No estoy seguro de por qué considera que toCharArray() no es intuitivo aquí, dividir por una cadena vacía para iterar sobre todos los caracteres es una forma indirecta de hacer las cosas. split() está destinado a la coincidencia de patrones y obtener grupos de cadenas.

PD: Revisé JDK 8, 11 y 17, el comportamiento parece ser consistente desde hace un tiempo.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda